package top.leinx.fxnotes.control;

/**
 * @Author : xiaolei
 * @DateTime: 2021/3/24 5:26 下午
 */

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class ButtonExample extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    @Override
    public void start(Stage primaryStage) {
        // ok.png、cancel.png 与 当前类在同一个包
        Image okImage = new Image(this.getClass().getResource("ok.png").toString());
        Image cancelImage = new Image(this.getClass().getResource("cancel.png").toString());

        Button buttonOK = new Button("确认", new ImageView(okImage)); // 创建带文本和图标的按钮
        buttonOK.setDefaultButton(true);                              // 设置为默认按钮
        // 使用匿名内部类设置按钮的动作监听
        buttonOK.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent event) {
                System.out.println("点击了【确认】按钮!");
            }
        });

        Button buttonCancel = new Button("取消");                     // 创建带有文本的按钮
        buttonCancel.setGraphic(new ImageView(cancelImage));          // 设置按钮的图标
        buttonCancel.setCancelButton(true);                           // 设置为取消按钮
        // 使用 lambda 表达式设置按钮的动作监听
        buttonCancel.setOnAction(event -> {
            System.out.println("点击了【取消】按钮!");
        });

        HBox box = new HBox(50, buttonOK, buttonCancel);
        box.setAlignment(Pos.CENTER);

        primaryStage.setTitle("Button 示例");
        primaryStage.setScene(new Scene(box, 300, 100));
        primaryStage.show();
    }
}
